This invention relates generally to methods and apparatus for transmitting data to, and receiving data from, an output or input device over a computer network.
The introduction of networks, such as LANs, WANs, and the Internet, has revolutionized the field of computing and, in particularly, the field of data transfer (i.e. inputting and outputting data) between devices. Early computer workstations included a personal computer electrically connected to input and output devices, such as printers, scanners, fax machines, and video cameras. Today, networks allow multiple computer workstations or personal computers (collectively called xe2x80x9cclientsxe2x80x9d) to share input or output devices.
To share resources across a network, the resources must be able to communicate using the same or compatible protocols. Conventional networks are organized as a series of layers, the numbers, names, contents, and function of which differ from network to network. In most conventional networks, however, each layer offers services to the higher layers while shielding those layers from the details of how the offered services are actually implemented. When machines communicate, the layers on each machine can communicate with an equivalent layer on other machines using the appropriate protocol for that layer. The protocols used by the layers of a system is referred to as a xe2x80x9cprotocol stackxe2x80x9d and define the network environment. In an UNIX environment, for example, the Transmission Control Protocol/Internet Protocol (TCP/IP) protocol stack includes the transmission control protocol (TCP) and Internet protocol (IP). Server Message Block (SMB) is a protocol stack for passing information between network computers for processing by a device. The TCP/IP protocol stack is one of the most common protocols used on the Internet.
FIG. 1 shows a conventional printing system including multiple clients and a shared printing device. Clients 105, 110, and 115 are connected via network 118 to a shared server 120 and printer 135. Any of clients 105, 110, and 115 may use printer 135 via server 120. If client 105 wants to print, for example, it sends, or xe2x80x9cpushes,xe2x80x9d a print job consisting of print commands and print data over network 118 to server 120. Server 120 stores the print job to a disk, queue, or xe2x80x9cspool,xe2x80x9d 125 in server 120. As a print job percolates to the top of the print queue, print controller 130 reads the stored file from spool 125 and transmits the file to printer 135. Print controller 130 also sends commands to printer 135. In response, printer 135 processes the received file.
This conventional xe2x80x9cpushxe2x80x9d technology has some limitations. In a conventional printing system, for example, clients transmit command information as well as a digital copy of the output file across the network to the server. The server 120 must therefore have sufficient disk space in the spool 124 to store the print jobs waiting to be printed. In networks with many clients, the server requires large amounts of costly disk space, and may delay accepting new jobs if the disk""s spool has reached its maximum storage capacity. When the spool is full, the client may waste time querying the server and waiting for it to have sufficient space to receive the job. Furthermore, the client may be inoperable for other tasks until the server can process the job, which can be a significant period of time if the output file is very large.
Additionally, in a conventional configuration, access to printers by clients will frequently be determined by chance and can be unfair. When a server rejects print jobs because the spool is full, clients wishing to output to a device controlled by that server may not be accepted in a predetermined order, but may have to keep querying the server hoping that its request arrives before the those of other clients when the server becomes available.
Furthermore, network print servers that receive requests to print from clients on a variety of platforms require multiple protocols and are more difficult to implement and troubleshoot. A platform is any piece of hardware plus its software operating system. FIG. 2 illustrates a conventional print server 210 that receives print requests from clients 220, 240, and 250, each operating on a different platform. Client 230 may be an Apple Macintosh using the MacOS(copyright) operating system, client 240 may be a PC using the UNIX operating system, and client 250 may be a PC operating the Windows 95(copyright) operating system. A server that accepts print jobs from clients on different platforms requires multiple protocol stacks to interpret and output the print request. For example, as shown in FIG. 2, print server 210 must contain TCP/IP 214, SMB 216, and PAP (Printer Access Protocol) 212 protocol stacks to communicate with the various clients 230, 240, and 250 on the network A server that must be configured to use a multitude of protocols is very complex, requiring additional time and resources to develop, troubleshoot, and maintain.
In addition, many conventional methods of printing using a network server do not allow a client to receive information about some status conditions. For example, in a conventional setting, once the client sends a print job to the print server, the client can only query the printer server for the status of the print job (such as whether it is currently printing or place in the print queue), but not for the status of the output device (such as amount of paper left in tray, etc.). Those systems that do allow fall bidirectional querying of printer status require specific hardware or licensed software. For example, IBM Corporation offers its Intelligent Printer Data Stream (IPDS) product that purportedly contains a command set for querying a printer for status information. The printer, however, must support the IPDS printer interface that recognizes a set of specially designed command sets in the IPDS architecture.
Consistent with this invention, in a network comprising an initiator, a server, and an output device, a server receives from an initiator a request comprising a network storage location of data to be output using the output device. The server places the request in a queue and schedules an output action based on the request. When the scheduled action is ready to be implemented, the server retrieves the output data from the network storage location which is different from the queue. A computer-readable medium consistent with the present invention contains instructions for outputting data in a network corresponding to tasks executable by a computer and performed by the server.
Another method for receiving data from an input device in a network consistent with this invention comprises the following operations, performed by the server. The server receives from input job information from an input device. The server stores the input job information to an input queue. The server receives a request from an initiator to process data from the input device based on the input job information. The server retrieves data from the input device based on the request and transmits the data to a location based on the data destination information. A computer-readable medium consistent with the present invention contains instructions for retrieving data from an input device in a network corresponding to tasks executable by a computer and performed by the server.
A network printer consistent with the present invention comprises a print mechanism for outputting data provided by the initiator. The network printer also comprises a controller for receiving from the initiator a request comprising the network storage location of data to be printed, placing the request in a queue, and scheduling the data to be printed based on the request. When the data is scheduled to be printed, the server retrieves the data from a location different from the queue, and transmits the data to the print mechanism.
An apparatus for controlling data in a network consistent with the present invention comprises a memory having program instructions; and a processor configured to receive a request from an initiator to output data provided by the initiator using the output device, the request comprising a network storage location of data to be output; place the request in a queue; schedule an output action based on the request in the queue, and retrieve the output data from the network storage location based on the request when the scheduled action is ready to be implemented, wherein the network storage location of the output data is different from the queue.
A further apparatus for controlling data in a network comprises a memory having program instructions; and a processor configured to receive input job information from an input device; store the input job information to an input queue; receive a request from an initiator to process data from the input device based on the input job information; and retrieve data from the input device based on the input job information when the input device is available.
Consistent with the present invention, a data control system comprises an initiator that transmits a request comprising a network storage location of data provided by the initiator to be output using the output device. A server receives the request, places the request in a queue, and schedules an action based on the request. When the scheduled action is ready to be implemented, the server retrieves the data from the network storage location which is different from the queue. The server may also retrieve input job information from an input device and retrieve data from an input device based on the input job information when the input device is available.
A network output device in a network comprises an output mechanism; a memory having program instructions; and a processor configured to receive a request from an initiator to output data provided by the initiator using the output device, the request comprising a network storage location of data to be output; place the request in a queue; schedule an output action based on the request in the queue, and retrieve the output data from the network storage location based on the request when the scheduled action is ready to be implemented, wherein the network storage location of the output data is different from the queue.
A network input device comprises a data input mechanism; a memory having program instructions; and a processor configured to receive input job information from an input device; store the input job information to an input queue; receive a request from an initiator to process data from the input device based on the input job information; and retrieve data from the input device based on the input job information when the input device is available.